home *** CD-ROM | disk | FTP | other *** search
/ Amiga Plus 2000 #5 / Amiga Plus CD - 2000 - No. 5.iso / Tools / Dev / lame_src / i386 / nasm.h < prev    next >
C/C++ Source or Header  |  2000-01-01  |  2KB  |  137 lines

  1.  
  2. ;    Copyright (C) 1999 URURI
  3.  
  4. ;    nasmÍÑ¥Þ¥¯¥í
  5. ;    99/08/21(¤¦¤ë¤ê) ºîÀ®
  6.  
  7. ;ñÀºÅÙÉâÆ°¾®¿ôÅÀ±é»»
  8.  
  9. %define F_PTR    dword
  10. %idefine float dword
  11. %idefine fsize 4
  12. %idefine fsizen(a) (fsize*(a))
  13.  
  14. ;REG
  15.  
  16. %define r0 eax
  17. %define r1 ebx
  18. %define r2 ecx
  19. %define r3 edx
  20. %define r4 esi
  21. %define r5 edi
  22. %define r6 ebp
  23. %define r7 esp
  24.  
  25. ;MMX,3DNow!,SSE
  26.  
  27. %define pmov    movq
  28. %define pmovd    movd
  29.  
  30. %define pupldq    punpckldq
  31. %define puphdq    punpckhdq
  32.  
  33. %define xm0 xmm0
  34. %define xm1 xmm1
  35. %define xm2 xmm2
  36. %define xm3 xmm3
  37. %define xm4 xmm4
  38. %define xm5 xmm5
  39. %define xm6 xmm6
  40. %define xm7 xmm7
  41.  
  42. ;¥·¥ã¥Ã¥Õ¥ëÍѤÎ4¿Ê¥Þ¥¯¥í
  43.  
  44. %define R4(a,b,c,d) (a*64+b*16+c*4+d)
  45.  
  46. ;C¥é¥¤¥¯¤Ê´Ê°×¥Þ¥¯¥í
  47.  
  48. %imacro globaldef 1
  49.     %ifdef _NAMING
  50.         %define %1 _%1
  51.     %endif
  52.     global %1
  53. %endmacro
  54.  
  55. %imacro externdef 1
  56.     %ifdef _NAMING
  57.         %define %1 _%1
  58.     %endif
  59.     extern %1
  60. %endmacro
  61.  
  62. %imacro proc 1
  63.     %push    proc
  64.     %ifdef _NAMING
  65.         global _%1
  66.     %else
  67.         global %1
  68.     %endif
  69.  
  70.     align 32
  71. %1:
  72. _%1:
  73.  
  74.     %assign %$STACK 0
  75.     %assign %$STACKN 0
  76.     %assign %$ARG 4
  77. %endmacro
  78.  
  79. %imacro endproc 0
  80.     %ifnctx proc
  81.         %error expected 'proc' before 'endproc'.
  82.     %else
  83.         %if %$STACK > 0
  84.             add esp, %$STACK
  85.         %endif
  86.  
  87.         %if %$STACK <> (-%$STACKN)
  88.             %error STACKLEVEL mismatch check 'local', 'alloc', 'pushd', 'popd'
  89.         %endif
  90.  
  91.         ret
  92.         %pop
  93.     %endif
  94. %endmacro
  95.  
  96. %idefine sp(a) esp+%$STACK+a
  97.  
  98. %imacro arg 1
  99.     %00    equ %$ARG
  100.     %assign %$ARG %$ARG+%1
  101. %endmacro
  102.  
  103. %imacro local 1
  104.     %assign %$STACKN %$STACKN-%1
  105.     %00 equ %$STACKN
  106. %endmacro
  107.  
  108. %imacro alloc 0
  109.     sub esp, (-%$STACKN)-%$STACK
  110.     %assign %$STACK (-%$STACKN)
  111. %endmacro
  112.  
  113. %imacro pushd 1-*
  114.     %rep %0
  115.         push %1
  116.         %assign %$STACK %$STACK+4
  117.     %rotate 1
  118.     %endrep
  119. %endmacro
  120.  
  121. %imacro popd 1-*
  122.     %rep %0
  123.     %rotate -1
  124.         pop %1
  125.         %assign %$STACK %$STACK-4
  126.     %endrep
  127. %endmacro
  128.  
  129. %ifdef __tos__
  130. group CGROUP text
  131. group DGROUP data
  132. %endif
  133.  
  134. %ifdef WIN32
  135.     %define _NAMING
  136. %endif
  137.